/**
 * @file vrml.h
 * Funções para a manipulação dos arquivos VRML.
 */

#ifndef VRML_H_
#define VRML_H_

#include <stdio.h>
#include "comum.h"


/**
 * Inicializa o terreno.
 *
 * Acessa a struct global terreno e inicializa suas varáiveis.
 * @param n O número do arquivo de terreno
 */
void init_terreno(int n);


/**
 * Finaliza o terreno.
 *
 * Desaloca os recursos usados pelo terreno para que o programa seja encerrado
 * corretamente.
 */
void end_terreno();


/**
 * Cria o arquivo VRML para uma nova formiga.
 *
 * Essa função é a versão baixo nível da criação de uma formiga.
 * Ela lê o arquivo de template de formiga e cria um novo arquivo baseado nesse
 * template para a nova formiga sendo gerada.
 * @param n O id dessa formiga
 * @return O novo arquivo criado para essa formiga, aberto em modo de escrita.
 */
FILE *init_formiga(int n);


/**
 * Finaliza o arquivo dessa formiga.
 *
 * @param formiga A formiga que já pode ser finalizada
 */
void end_formiga(Formiga *formiga);


/**
 * Junta o terreno e todas as formigas em um único arquivo para a simulação.
 */
void junta_arquivos();


/**
 * Salva o passo que a formga deu no arquivo dela.
 *
 * @param formiga A formiga que acabou de dar o passo que deve ser salvo.
 */
void grava_passo(Formiga *formiga);

#endif
